package com.kb.erp.entity.quote;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.*;
import org.apache.ibatis.type.JdbcType;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 组件价格
 *
 * @author 芋道源码
 */
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ComponentPriceVO {
    /**
     * 创建时间
     */
//    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    /**
     * 最后更新时间
     */
//    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    /**
     * 创建者，目前使用 SysUser 的 id 编号
     * <p>
     * 使用 String 类型的原因是，未来可能会存在非数值的情况，留好拓展性。
     */
    @TableField(fill = FieldFill.INSERT, jdbcType = JdbcType.VARCHAR)
    private String creator;
    /**
     * 更新者，目前使用 SysUser 的 id 编号
     * <p>
     * 使用 String 类型的原因是，未来可能会存在非数值的情况，留好拓展性。
     */
    @TableField(fill = FieldFill.INSERT_UPDATE, jdbcType = JdbcType.VARCHAR)
    private String updater;
    /**
     * 编号
     */
    @TableId
    private Long id;
    /**
     * 库存编号
     */
    private Long stockId;
    /**
     * 折扣价JSON
     */
    private String json;
    /**
     * 库存数量
     */
    private Long stock;
    /**
     * 包装
     */
    private String packaging;

    /**
     * 封装
     */
    private String encapsulation;

    /**
     * 型号
     */
    private String model;
    /**
     * 货币
     */
    private String currency;

    private String costJson;

    private String saleJson;

    private Long validateTime = 180L;
    /**
     * 单位
     */
    private String unit;

    /**
     * 2-手动维护，需要定时清除
     */
    private Integer type;

    private List<ComponentPriceVO> children;
    /**
     * 库存基本信息
     */
    private ComponentStockVO stockInfo;

    private String costPriceText;

    private String priceText;

    private String numText;


    private String matchPrice;

    private String matchCostPrice;

    /**
     * 查询数量
     */
    private Integer qty;
    /**
     * 匹配数量
     */
    private Integer matchingQuantity;
    /**
     * 匹配折扣率
     */
    private String matchDiscount;


    public ComponentPriceVO(Long stockId, String json, Long stock, String packaging, String encapsulation, String currency, String model, String costJson, String saleJson) {
        this.stockId = stockId;
        this.json = json;
        if (stock == null) {
            stock = 0L;
        }
        this.stock = stock;
        this.packaging = packaging;
        this.encapsulation = encapsulation;
        this.currency = currency;
        this.model = model;
        this.createTime = LocalDateTime.now();
        this.updateTime = LocalDateTime.now();
        this.costJson = costJson;
        this.saleJson = saleJson;

    }
}
